#ifndef _CLED_MATRIX_ANGLE_H_
#define _CLED_MATRIX_ANGLE_H_

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

struct cledMatrixPixel
{
    union
    {
        uint32_t pixel;
        struct
        {
            int16_t angle;   //
            uint16_t radius;
        };
    };
};
struct cledMatrixPixelLimit
{
    union
    {
        uint16_t pixel;
        struct
        {
            uint16_t angle: 10;   //
            uint16_t radius: 6;
        };
    };
};
#define MATRIX_ANGLE_SIZE      42

/*************************************************************************************************
* 为节省空间占用,仅计算 0-90°范围,其它角度根据象限间的关系重新计算
* 为节保留 精度并加快运算速度,将处理后的结果保存为整型，精度为 1/64
**************************************************************************************************/
//extern void cledMatrixAngle(const uint16_t cols, const uint16_t rows);
extern void cledMatrixAngle2(void);
extern void cledMatrixAngleLimit2(void);
/*************************************************************************************************
* 根据坐标通过查表的方式获取角度值和半径
* 为节保留 精度并加快运算速度,将处理后的结果保存为整型，精度为 1/64
**************************************************************************************************/
extern uint32_t cledMatrixAngleGet(const int16_t x, const int16_t y);
extern uint32_t cledMatrixAngleLimitGet(const int16_t x, const int16_t y);

#ifdef __cplusplus
}
#endif

#endif // _CLED_MATRIX_ANGLE_H_
